From: Matthias Clasen Date: Sun, 25 Jan 2015 00:31:11 +0000 (-0500) Subject: x11: Handle obsolete selection requests without crashing X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~39^2~7857 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=5fc8cf43317b1eef865fddefd69093b30a544976;p=gtk%2B3.0.git x11: Handle obsolete selection requests without crashing The ICCCM says: If the specified property is None, the requestor is an obsolete client. Owners are encouraged to support these clients by using the specified target atom as the property name to be used for the reply. Lets do that, instead of crashing. https://bugzilla.gnome.org/show_bug.cgi?id=740613 The previous fix for this issue in 732af31424b8f382d was incomplete. --- diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index e658780994..1477a75d8b 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -919,7 +919,10 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator, event->selection.window = window; event->selection.selection = gdk_x11_xatom_to_atom_for_display (display, xevent->xselectionrequest.selection); event->selection.target = gdk_x11_xatom_to_atom_for_display (display, xevent->xselectionrequest.target); - event->selection.property = gdk_x11_xatom_to_atom_for_display (display, xevent->xselectionrequest.property); + if (xevent->xselectionrequest.property == None) + event->selection.property = event->selection.target; + else + event->selection.property = gdk_x11_xatom_to_atom_for_display (display, xevent->xselectionrequest.property); if (xevent->xselectionrequest.requestor != None) event->selection.requestor = gdk_x11_window_foreign_new_for_display (display, xevent->xselectionrequest.requestor);